package com.unitd.modules.sys.dao;

import com.unitd.frame.mybatis.core.dao.IBaseDao;
import com.unitd.modules.sys.entity.SysUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface ISysUserDao extends IBaseDao<SysUser, String> {

	/**
	 * @desc 获取单条数据
	 * @param id 主键ID
	 * @return
	 */
	SysUser findBy(@Param("id") String id);

	/**
	 * @desc 查询指定用户的所有权限
	 * @param userId 用户主键ID
	 * @return
	 */
	List<String> findAllPerms(String userId);

	/**
	 * @desc 查询指定用户的所有菜单ID
	 * @param userId 用户ID
	 * @return
	 */
	List<String> findAllMenuId(String userId);

	/**
	 * @desc 根据用户名,查询系统用户
	 * @param userName 用户名称
	 * @return
	 */
	SysUser findByUserName(String userName);

	/**
	 * @desc 根据用户信息,修改用户密码
	 * @param userDataMap 用户信息(主要的key为: userId、password、newPassword)
	 * @return
	 */
	int updatePassword(Map<String, Object> userDataMap);

	/**
	 * @desc 根据用户信息, 修改用户最后登录时间
	 * @param userDataMap 用户信息(主要的key为: userId、loginIp)
	 * @return
	 */
	int updateLoginDate(Map<String, Object> userDataMap);

	/**
	 * @desc 根据选择的机构编号,获取该机构下的用户的最大sort值并+1
	 * @param orgNo 机构No
	 * @return
	 */
	Integer getMaxSortByOrgNo(String orgNo);

	/**
	 * @desc 获取即将新增的记录的主键ID值
	 * @return
	 */
	String getPrePrimaryKey();

	/**
	 * @desc 根据参数信息,逻辑删除对象信息
	 * @param entity 删除参数对象
	 */
	int deleteByDelFlag(SysUser entity);
}